package com.zmn.plat.business.interfaces.expressage;

import java.util.List;

import com.zmn.plat.model.dto.expressage.ExpressageCompanyDTO;
import com.zmn.plat.model.dto.expressage.ExpressageDTO;

/**
 * 快递服务
 *
 * @author quanjic
 * @version v1.0
 * @since 2018/11/26 21:19
 **/
@Deprecated
public interface ExpressageService {

    /**
     * 通过快递单号查询快递；查询结果将会缓存5分钟。
     *
     * @param company
     *            快递公司编码，非null
     * @param code
     *            快递单号，非null
     * @return 快递或者null
     * @throws ExpressageException
     */
    ExpressageDTO find(String company, String code) throws ExpressageException;

    /**
     * 通过快递单号查询可能的快递公司列表
     *
     * @param code
     * @return 可能的快递公司列表
     */
    List<ExpressageCompanyDTO> findCompany(String code) throws ExpressageException;

    /**
     * 查询所有快递公司
     *
     * @return
     */
    List<ExpressageCompanyDTO> listCompany();

    /**
     * 订阅快递单号；获取快递最新消息；查询结果将会缓存5分钟。
     *
     * @param company
     *            快递公司编码，可为空
     * @param code
     *            快递单号
     * @throws ExpressageException
     */
    void subscribe(String company, String code) throws ExpressageException;

}
